package com.zoe.im.controller;

import com.zoe.im.entity.Message;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author Zoe.Zhang
 * @date 2021/10/30
 * @description
 */
@RestController
public class GreetingController {
    private static final Logger logger = LoggerFactory.getLogger(GreetingController.class);
    @Autowired
    private SimpMessagingTemplate simpMessagingTemplate;

    // 方式1：

    // 前台给后台发送消息的接口地址,如果定义了消息前缀,则前台需要加上消息前缀 "/app/hello"
    // setApplicationDestinationPrefixes("/app")
    @MessageMapping("/hello")
    // 后台发送给前台的消息地址,前台所有订阅了该地址的socket都会收到这个消息
    @SendTo("/topic/greetings")
    public Message greetings(Message message) {
        logger.info("客户端消息===>{}", message);
        return message;
    }

    // 方式2：
    // 前台给后台发送消息的接口地址,如果定义了消息前缀,则前台需要加上消息前缀 "/app/hello"
    // setApplicationDestinationPrefixes("/app")
    // @MessageMapping("/hello")
    // public void greetings1(Message message) {
    //     logger.info("客户端消息===>{}", message);
    //     // 后台发送给前台的消息地址,前台所有订阅了该地址的socket都会收到这个消息
    //     simpMessagingTemplate.convertAndSend("/topic/greetings", message);
    // }

}
